/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entidades;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Temporal;

/**
 *
 * @author aluno
 */
@Entity
public class Usuario implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String email;
    private String nome;
    private String caminhoFoto;
    private boolean contaConfirmada;

    public boolean isContaConfirmada() {
        return contaConfirmada;
    }

    public void setContaConfirmada(boolean contaConfirmada) {
        this.contaConfirmada = contaConfirmada;
    }

    public String getCaminhoFoto() {
        return caminhoFoto;
    }

    public void setCaminhoFoto(String caminhoFoto) {
        this.caminhoFoto = caminhoFoto;
    }
    private String senha;
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date data_nasc;
    private boolean n_acesso;
    @ManyToMany
    private Collection<Album> albums;
    @ManyToMany
    private Collection<Musica> musicas;
    @ManyToMany
    private Collection<Artista> artistas;
    @ManyToMany
    private Collection<Genero> generos;
    @ManyToMany
    private Collection<Usuario> amigos;

    public Collection<Usuario> getAmigos() {
        return amigos;
    }

    public void setAmigos(Collection<Usuario> amigos) {
        this.amigos = amigos;
    }

    public Collection<Artista> getArtistas() {
        return artistas;
    }

    public void setArtistas(Collection<Artista> artistas) {
        this.artistas = artistas;
    }

    public Collection<Album> getAlbums() {
        return albums;
    }

    public void setAlbums(Collection<Album> albums) {
        this.albums = albums;
    }

    public Collection<Musica> getMusicas() {
        return musicas;

    }

    public void setMusicas(Collection<Musica> musicas) {
        this.musicas = musicas;
    }

    public Collection<Genero> getGeneros() {
        return generos;
    }

    public void setGeneros(Collection<Genero> generos) {
        this.generos = generos;
    }

    public Date getData_nasc() {
        return data_nasc;
    }

    public void setData_nasc(Date data_nasc) {
        this.data_nasc = data_nasc;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public boolean isN_acesso() {
        return n_acesso;
    }

    public void setN_acesso(boolean n_acesso) {
        this.n_acesso = n_acesso;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (int) id;
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Usuario)) {
            return false;
        }
        Usuario other = (Usuario) object;
        if (this.id != other.id) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entidades.Usuario[ id=" + id + " ]";
    }
}
